Traditionally, client devices connected to public networks connect to private networks using virtual private networks (VPNs). In a VPN, a proxy device, simply acting as a transparent pipe, may provide the necessary connection between the client device and the private network. Various problems with traditional VPNs exist. First, a lot of trust is put on the client device because the client device can directly access resources on the private networks. Second, the client device must be configured for the communication protocol of the resource and/or private network. Third, the proxy device cannot control or monitor the activities of the client device.